home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / iguana / vtiris / iris.asm < prev    next >
Assembly Source File  |  1993-05-12  |  5KB  |  210 lines

  1. ; ------------------------------ IRIS.ASM ------------------------------
  2. ; Bye Jare of VangeliSTeam. Want more comments? Write'em. O:-)
  3.  
  4.  
  5.         .MODEL SMALL
  6.         .STACK 400
  7.         DOSSEG
  8.         LOCALS
  9.  
  10. PAL_DIVIDER = 2
  11.  
  12.         .DATA
  13.  
  14. CosTable LABEL BYTE
  15.         INCLUDE COSTBL.INC
  16.  
  17. ByeMsg  LABEL BYTE
  18.         INCLUDE IRISTXT.INC
  19. ByeMsgLng = $-ByeMsg
  20.  
  21. Palette LABEL BYTE
  22.         i = 0
  23.         REPT 128 SHR PAL_DIVIDER
  24.                 DB      63, i, 63-i
  25.                 i = i+ (1 SHL (PAL_DIVIDER-1))
  26.         ENDM
  27.         i = 0
  28.         REPT 128 SHR PAL_DIVIDER
  29.                 DB      63-i, 63, i
  30.                 i = i+ (1 SHL (PAL_DIVIDER-1))
  31.         ENDM
  32.         i = 0
  33.         REPT 128 SHR PAL_DIVIDER
  34.                 DB      0, 63-i, 63
  35.                 i = i+ (1 SHL (PAL_DIVIDER-1))
  36.         ENDM
  37.         i = 0
  38.         REPT 128 SHR PAL_DIVIDER
  39.                 DB      i, 0, 63
  40.                 i = i+ (1 SHL (PAL_DIVIDER-1))
  41.         ENDM
  42.  
  43.  
  44. VTime1  DB 2                            ; Waves' speeds.
  45. VTime2  DB 1
  46. VTime3  DB 3
  47. VTime4  DB 4
  48.  
  49.         UDATASEG
  50.  
  51. PlasmaPal DB (256 SHR (PAL_DIVIDER-1))*3 DUP (?)
  52.  
  53. Time1    DB ?                           ; Waves' positions. Random, eh? ;-)
  54. Time2    DB ?
  55. Time3    DB ?
  56. Time4    DB ?
  57.  
  58.         .CODE
  59.         .STARTUP
  60.  
  61.         CLD
  62.         MOV     AX,13h
  63.         INT     10h
  64.         CLI
  65.         MOV     DX,3c4h
  66.         MOV     AX,604h                 ; "Unchain my heart". And my VGA...
  67.         OUT     DX,AX
  68.         MOV     AX,0F02h                ; All planes
  69.         OUT     DX,AX
  70.  
  71.         MOV     DX,3D4h
  72.         MOV     AX,14h                  ; Disable dword mode
  73.         OUT     DX,AX
  74.         MOV     AX,0E317h               ; Enable byte mode.
  75.         OUT     DX,AX
  76.         MOV     AL,9
  77.         OUT     DX,AL
  78.         INC     DX
  79.         IN      AL,DX
  80.         AND     AL,0E0h                 ; Duplicate each scan 8 times.
  81.         ADD     AL,7
  82.         OUT     DX,AL
  83.         MOV     DX,3c8h                 ; Setup palette.
  84.         MOV     AL,256-(256 SHR (PAL_DIVIDER-1))
  85.         OUT     DX,AL
  86.         INC     DX
  87.         MOV     CX,(256 SHR (PAL_DIVIDER-1))*3
  88.         MOV     SI,OFFSET Palette       ; Prestored...
  89. @@pl1:
  90.          LODSB
  91.          OUT    DX,AL
  92.          LOOP   @@pl1
  93.  
  94.         MOV     AX,0A000h
  95.         MOV     ES,AX
  96.         
  97.         MOV     SI,OFFSET CosTable
  98. MainLoop:
  99.         MOV     DX,3DAh                 ; Retrace sync.
  100. @@vs1:
  101.         IN      AL,DX
  102.         TEST    AL,8
  103.         JZ      @@vs1
  104. @@vs2:
  105.         IN      AL,DX
  106.         TEST    AL,8
  107.         JNZ     @@vs2
  108.         XOR     DI,DI
  109.  
  110.         MOV     AH,50                   ; 50 lines.
  111.         MOV     CL,Time3                ; Vertical Wave #1 position.
  112.         MOV     CH,Time4                ; Vertical Wave #2 position.
  113.    @@lv:
  114.         PUSH    AX
  115.         MOV     AH,80                   ; 80 columns. I like this mode. ;-)
  116.         MOV     DL,Time1                ; Horizontal Wave #1 position.
  117.         MOV     DH,Time2                ; Horizontal Wave #2 position.
  118.    @@lh:
  119.         MOV     BX,BP                   ; Global displacement.
  120.         MOV     AL,BL
  121. ;        ADD     AL,AH                  ; Could make for more perturbations.
  122.         XOR     BH,BH
  123.         MOV     BL,DL
  124.         ADD     AL,[SI+BX]              ; Add waves.
  125.         MOV     BL,DH
  126.         ADD     AL,[SI+BX]
  127.         MOV     BL,CL
  128.         ADD     AL,[SI+BX]
  129.         MOV     BL,CH
  130.         ADD     AL,[SI+BX]
  131.       IFDIF %PAL_DIVIDER,<1>
  132.         OR      AL, (0FFh SHL (9-PAL_DIVIDER)) AND 0FFh
  133.       ENDIF
  134.         STOSB                           ; Draw it.
  135.  
  136.         ADD     DL,1                    ; Trace the HWaves.
  137.         ADD     DH,3
  138.  
  139.         DEC     AH
  140.         JNZ     @@lh                    ; Trace the VWaves.
  141.         ADD     CL,2
  142.         ADD     CH,1
  143.         POP     AX
  144.         DEC     AH
  145.         JNZ     @@lv
  146.  
  147.  
  148.         DEC     BP                              ; Get a (reasonably) random.
  149.         MOV     BX,BP
  150.         XOR     BL,BH
  151.         XOR     BL,-1[DI]
  152.         XOR     BL,CL
  153.         XOR     BL,DL
  154.         ADD     BL,CH
  155.         ADD     BL,DH
  156.  
  157.         XOR     BH,BH                           ; Choose a speed to INC or DEC.
  158.         MOV     Di,OFFSET VTime1
  159.         TEST    BL,8
  160.         JNZ     @@dec
  161.         AND     BL,3
  162.         CMP     BYTE PTR [DI+BX],3
  163.         JG      @@sum
  164.         INC     BYTE PTR [DI+BX]
  165.         JMP     @@sum
  166.       @@dec:
  167.         AND     BL,3
  168.         CMP     BYTE PTR [DI+BX],-3
  169.         JL      @@sum
  170.         DEC     BYTE PTR [DI+BX]
  171.       @@sum:
  172.  
  173.         MOV     DL,VTime1                       ; Move waves.
  174.         MOV     DH,VTime2
  175.         MOV     CL,VTime3
  176.         MOV     CH,VTime4
  177.  
  178.         ADD     Time1,DL
  179.         SUB     Time2,DH
  180.         ADD     Time3,CL
  181.         SUB     Time4,CH
  182.  
  183.         MOV     AH,1
  184.         INT     16h
  185.         JNZ     Bye
  186.         JMP     MainLoop
  187. Bye:
  188.         XOR     AH,AH
  189.         INT     16h
  190.         MOV     AX,3
  191.         INT     10h
  192.         XOR     BH,BH
  193.         MOV     DX,1700h
  194.         MOV     AH,2
  195.         INT     10h
  196.  
  197.         MOV     AX,0B800h
  198.         MOV     ES,AX
  199.         MOV     SI,OFFSET ByeMsg
  200.         XOR     DI,DI
  201.         MOV     CX,ByeMsgLng/2
  202.         REP     MOVSW
  203.  
  204.         MOV     AX,4C00h
  205.         INT     21h
  206.  
  207.         END
  208. ; ------------------------------ End of IRIS.ASM ---------------------------
  209.  
  210.